#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
主题: 读写压缩文件
问题: 你想读写一个gzip或bz2格式的压缩文件。
提示 : 
"""

import gzip
import bz2

def recipe1():
    '''读取压缩文件'''
    with gzip.open('../access-log-0208.gz', 'rt') as f:
        print(f"{ f.read(1024) = }")

    with bz2.open('../access-log-0108.bz2', 'rt') as f:
        print(f"{ f.read(1024) = }")   

def recipe2():
    '''写入压缩文件'''
    with gzip.open('07_gzip_bz2.gz', 'wt') as f:
        f.write('text')

    # 默认的等级是9，也是最高的压缩等级。等级越低性能越好，但是数据压缩程度也越低
    with bz2.open('07_gzip_bz2.bz2', 'wt', compresslevel=5) as f:
        f.write('text')

def recipe3():
    '''
    作用在一个已存在并以二进制模式打开的文件上, 这样就允许 gzip 和 bz2 模块可以工作在许多类文件对象上，比如套接字，管道和内存中文件等
    '''
    f = open('../access-log-0208.gz', 'rb')
    with gzip.open(f, 'rt') as g:
         print(f"{ g.read(1024) = }")

def main():
    print('recipe1'.center(20, '*'))
    recipe1()
    print('recipe2'.center(20, '*'))
    recipe2()
    print('recipe3'.center(20, '*'))
    recipe3()

if __name__ == '__main__':
    main()              